﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CalculaCalles
{
    public partial class frmCalculaCalles : Form
    {
        public frmCalculaCalles()
        {
            InitializeComponent();
        }

        public int Calle = 0;
        public int Calle1 = 0;
        public int Calle2 = 0;
        public int Altura = 0;

        private void txtCalle_KeyUp(object sender, KeyEventArgs e)
        {
            int calle = 0;

            if (e.KeyCode == Keys.Enter 
                || e.KeyCode == Keys.Return)
            { 
                if (txtCalle.Text.Trim() != string.Empty
                    && int.TryParse(txtCalle.Text, out calle))
                {
                    Calle = calle;
                    txtAltura.Focus();
                }
            }
        }

        private void txtAltura_KeyUp(object sender, KeyEventArgs e)
        {
            int altura = 0;

            if (e.KeyCode == Keys.Enter
                || e.KeyCode == Keys.Return)
            {
                if (txtAltura.Text.Trim() != string.Empty
                    && int.TryParse(txtAltura.Text, out altura))
                {
                    Altura = altura;

                }
                else
                {
                    return;
                }

                btnCalula_Click(null, null);
            }
        }

        private string CalculaCalle()
        {
            string respuesta = string.Empty;

            char[] alturaChar = Altura.ToString().ToCharArray();

            int defineAltura = 0;
            
            if (alturaChar.Length > 1)
            {
                defineAltura = int.Parse(alturaChar[alturaChar.Length - 2].ToString() + alturaChar[alturaChar.Length - 1].ToString());
            }
            else
            {
                defineAltura = int.Parse(alturaChar[0].ToString());
            }

            for (int i = 1; i < 32; i++)
            {
                if (i == Calle)
                {
                    if (alturaChar.Length == 4)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString() + alturaChar[1].ToString()) * 2) + 32;
                    }
                    else if (alturaChar.Length == 3)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString()) * 2) + 32;
                    }
                    
                    if (defineAltura > 50)
                    {
                        Calle1 = Calle1 + 1;
                    }

                    Calle2 = Calle1 + 1;

                    respuesta = "Calle " + Calle + " N° " + Altura + " entre " + Calle1 + " y " + Calle2;
                }
            }

            for (int i = 32; i < 73; i++)
            {
                if (i == Calle)
                {
                    if (alturaChar.Length == 4)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString() + alturaChar[1].ToString()) * 2) - 5;
                    }
                    else if (alturaChar.Length == 3)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString()) * 2) - 5;
                    }

                    if (defineAltura > 50)
                    {
                        Calle1 = Calle1 + 1;
                    }

                    Calle2 = Calle1 + 1;

                    respuesta = "Calle " + Calle + " N° " + Altura + " entre " + Calle1 + " y " + Calle2;
                }
            }

            switch (Calle)
            { 
                case 73: case 74: case 79: case 80:
                    if (alturaChar.Length == 4)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString() + alturaChar[1].ToString())) - 5;
                    }
                    else if (alturaChar.Length == 3)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString())) - 5;
                    }
                    Calle2 = Calle1 + 1;

                    respuesta = "Diagonal " + Calle + " N° " + Altura + " entre " + Calle1 + " y " + Calle2;

                    break;
                case 75: case 76:
                    if (alturaChar.Length == 4)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString() + alturaChar[1].ToString())) + 14;
                    }
                    else if (alturaChar.Length == 3)
                    {
                        Calle1 = (int.Parse(alturaChar[0].ToString())) + 14;
                    }
                    Calle2 = Calle1 + 1;
                    
                    respuesta = "Diagonal " + Calle + " N° " + Altura + " entre " + Calle1 + " y " + Calle2;

                    break;
            }

            return respuesta;
        }

        private void btnCalula_Click(object sender, EventArgs e)
        {
            Calle1 = 0;
            Calle2 = 0;

            if (txtCalle.Text.Trim() != string.Empty && txtAltura.Text.Trim() != string.Empty)
            {
                int calle = 0;
                int altura = 0;

                if (txtAltura.Text.Trim() != string.Empty
                    && int.TryParse(txtAltura.Text, out altura))
                {
                    Altura = altura;

                }
                else
                {
                    return;
                }

                if (txtCalle.Text.Trim() != string.Empty
                    && int.TryParse(txtCalle.Text, out calle))
                {
                    Calle = calle;
                    txtAltura.Focus();
                }
                else
                {
                    return;
                }

                lblRespuesta.Text = CalculaCalle();
            }
        }

        private void txtCalle_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
            e.Handled = true;
            }
        }

        private void txtAltura_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txtCalle_Enter(object sender, EventArgs e)
        {
            txtCalle.Text = string.Empty;
        }

        private void txtAltura_Enter(object sender, EventArgs e)
        {
            txtAltura.Text = string.Empty;
        }

        private void frmCalculaCalles_Load(object sender, EventArgs e)
        {
            this.Hide();
        }

        private void mostrarOcultarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Visible = !this.Visible;
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            IconoNotificacion.Visible = false;
            Application.Exit();
        }
   }
}
